home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
vol_200
/
287_02
/
line.asm
< prev
next >
Wrap
Assembly Source File
|
1989-05-23
|
5KB
|
182 lines
TITLE LINE of GDS
page 60,132
.SFCOND
;
; *==========================================================*
; * This file contain level 1 line drawing *
; *==========================================================*
IFDEF COLOR
IFDEF HERC
.err both display type defined
ENDIF
else
IFNDEF HERC
HERC equ 0
ENDIF
ENDIF
smo equ 4 ; small model offset value
DGROUP group _DATA
_DATA segment word public 'DATA'
assume ds:DGROUP
extrn _STYLE:word
_DATA ends
_TEXT segment byte public 'CODE'
assume cs:_TEXT,ds:DGROUP
public _lline1,_lline3,_lline2,_lline4
extrn $calc:near, downln:near, $dot:near
extrn _horzl:near, _vert1l:near
_lline1 proc near ;public to c
push bp
mov bp,sp
push si
push di
mov si,[bp+smo+6]
mov dx,_STYLE
xchg dh,dl
mov cx,[bp+smo]
and cl,0fh
jz short ll1d
rol dx,cl
jmp short ll1d
ll1a: inc word ptr [bp+smo]
mov ax,[bp+smo+8]
test ax,ax
jns short ll1b
add ax,[bp+smo+10]
jmp short ll1c
ll1b: add ax,[bp+smo+12]
mov bx,[bp+smo+4]
add [bp+smo+2],bx
ll1c: mov [bp+smo+8],ax
ll1d: rol dx,1
jnc ll1e
mov ax,[bp+smo]
mov bx,[bp+smo+2]
push dx
call $dot
pop dx
ll1e: dec si
jns ll1a
pop di
pop si
pop bp
ret
_lline1 endp
_lline2 proc near ;public to c
push bp
mov bp,sp
ll2a: mov bx,1
mov ax,[bp+smo+8]
ll2b: test ax,ax
jns short ll2c
add ax,[bp+smo+10]
inc bx
dec word ptr [bp+smo+6]
jnz short ll2b
jmp short ll2d
ll2c: add ax,[bp+smo+12]
mov [bp+smo+8],ax
push bx
mov ax,[bp+smo+2]
push ax
add ax,[bp+smo+4]
mov [bp+smo+2],ax
push word ptr [bp+smo]
add [bp+smo],bx
call _horzl
mov sp,bp
dec word ptr [bp+smo+6]
jnz short ll2a
mov bx,1
ll2d: push bx
push word ptr [bp+smo+2]
push word ptr [bp+smo]
call _horzl
mov sp,bp
pop bp
ret
_lline2 endp
_lline3 proc near ;public to c
push bp
mov bp,sp
push si
push di
mov si,[bp+smo+6]
mov dx,_STYLE
xchg dh,dl
mov cx,[bp+smo+2]
and cl,0fh
jz ll3d
rol dx,cl
jmp short ll3d
ll3a: inc word ptr [bp+smo+2]
mov ax,[bp+smo+8]
test ax,ax
jns short ll3b
add ax,[bp+smo+10]
jmp short ll3c
ll3b: add ax,[bp+smo+12]
mov bx,[bp+smo+4]
add [bp+smo],bx
ll3c: mov [bp+smo+8],ax
ll3d: rol dx,1
jnc ll3e
mov ax,[bp+smo]
mov bx,[bp+smo+2]
push dx
call $dot
pop dx
ll3e: dec si
jns ll3a
pop di
pop si
pop bp
ret
_lline3 endp
_lline4 proc near ;public to c
push bp
mov bp,sp
ll4a: mov bx,1
mov ax,[bp+smo+8]
ll4b: test ax,ax
jns short ll4c
add ax,[bp+smo+10]
inc bx
dec word ptr [bp+smo+6]
jnz short ll4b
jmp short ll4d
ll4c: add ax,[bp+smo+12]
mov [bp+smo+8],ax
push bx
push word ptr [bp+smo+2]
add [bp+smo+2],bx
mov ax,[bp+smo]
push ax
add ax,[bp+smo+4]
mov [bp+smo],ax
call _vert1l
mov sp,bp
dec word ptr [bp+smo+6]
jnz short ll4a
mov bx,1
ll4d: push bx
push word ptr [bp+smo+2]
push word ptr [bp+smo]
call _vert1l
mov sp,bp
pop bp
ret
_lline4 endp
_TEXT ends
end